import vnode from './vnode';
import createElement from './createElement';
import patchVnode from './patchVnode';

export default function (oldVnode, newVnode) {
  // 判断传入的第一个参数是不是虚拟节点
  if (oldVnode.sel == '' || oldVnode.sel == undefined) {
    oldVnode = vnode(oldVnode.tagName.toLowerCase(), {}, [], undefined, oldVnode);
  }
  // 判断oldVnode和newVnode是不是同一个节点
  if (oldVnode.sel == newVnode.sel && oldVnode.key == newVnode.key) {
    // 同一个节点
    patchVnode(oldVnode, newVnode);
  } else {
    // 不是同一个节点，暴力删除旧的，插入新的
    // 1、给新的虚拟节点创建DOM节点
    let newVnodeElm = createElement(newVnode);
    // 2、插入新的DOM节点
    if (oldVnode.elm.parentNode && newVnodeElm) {
      oldVnode.elm.parentNode.insertBefore(newVnodeElm, oldVnode.elm);
    }
    // 3、删除旧的
    oldVnode.elm.parentNode.removeChild(oldVnode.elm);
  }
}